from win32com.client import constants, gencache
import os
import utils


#  创建pdf文件; word_path: 输入文件路径  pdf_path: 输出文件路径
def create_pdf(word_path, pdf_path):
    word = gencache.EnsureDispatch('Word.Application')
    doc = word.Documents.Open(word_path, ReadOnly=1)
    # 转换方法
    # 转换pdf文档的参数信息描述  官方链接: https://docs.microsoft.com/zh-cn/office/vba/api/word.document.exportasfixedformat
    doc.ExportAsFixedFormat(pdf_path, constants.wdExportFormatPDF)
    word.Quit()


#  ml是绝对路径
def create_pdfs(ml):
    # 循环目录下的文件
    for file in os.listdir(ml):
        if file.endswith(('.doc', '.docx')):
            word_path = ml + file  # 获取文件的绝对路径
            index = word_path.rindex('.')  # 最后一次.出现的位置
            target_path_pdf = word_path[:index] + '.pdf'  # 替换后缀为-->> .pdf
            create_pdf(word_path, target_path_pdf)


# ################# 单个文件转换  start
# create_pdf(root_file_abs + '/myFile/wordToPdf/wordToPdf.docx', root_file_abs + '/myFile/wordToPdf/pdf1.pdf')
# ################# 多个文件转换 start
create_pdfs(utils.get_project_root_abs_path()+'/myFile/wordToPdf/')  # 执行方法;参数是绝对路径
